package com.xinjiang.electricpower.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.xinjiang.electricpower.domain.DTO.WorkOrderEarlyWarningDTO;
import com.xinjiang.electricpower.domain.XjOrderGeneral;
import com.xinjiang.electricpower.domain.vo.EventProcessingVO;
import com.xinjiang.electricpower.domain.vo.MyEarlyWarningVO;
import com.xinjiang.electricpower.domain.vo.WorkOrderPoolSummaryVO;

import java.util.List;

/**
 * @author feizhao
 * @date 2022/11/17
 * @apiNote
 */
public interface IWorkOrderWarningService extends IService<XjOrderGeneral> {

    /**
     * 查询工单完成情况
     * @param workOrderEarlyWarningDTO 工单完成情况DTO类
     * @return List<EventProcessingVO> 工单完成情况列表
     */
    List<EventProcessingVO> selectGdWarningTypesCount(WorkOrderEarlyWarningDTO workOrderEarlyWarningDTO);



    /**
     * 自定义分页
     *
     * @param page 分页对象
     * @param workOrderEarlyWarningDTO 工单预警DTO类
     * @return PageInfo<MyEarlyWarningVO> 返回工单预警实体类待处理分页信息
     */
    PageInfo<MyEarlyWarningVO> selectMyEarlyWarningPage(PageDTO<MyEarlyWarningVO> page, WorkOrderEarlyWarningDTO workOrderEarlyWarningDTO);
    /**
     * 查看详情
     *
     * @param id 工单id
     * @return MyEarlyWarningVO 预警工单详情VO类
     */
    MyEarlyWarningVO selectMyEarlyWarningDetail(String id);
    /**
     *工单预警按照各个类型汇总待办工单
     * @return  List<WorkOrderPoolSummaryVO> 返回汇总数据
     */
    List<WorkOrderPoolSummaryVO> getXjOrderGeneralByStatus(WorkOrderEarlyWarningDTO workOrderEarlyWarningDTO);
    /**
     * 标记处理
     *
     * @param workOrderEarlyWarningDTO 工单预警DTO实体类
     * @return boolean 修改成功与否
     */
    public int updateProcessingMark(WorkOrderEarlyWarningDTO workOrderEarlyWarningDTO);


    /**
     * 查询工单列表无分页
     *
     * @param ids 批量id
     * @return List<XjOrderGeneralVO> 返回工单列表
     */
    public List<MyEarlyWarningVO> selectMyEarlyWarnings(String... ids);

    /**
     * 查询工单列表无分页
     * @param workOrderEarlyWarningDTO 派工单DTO类
     * @return  List<MyEarlyWarningVO> 返回预警工单列表
     */
    List<MyEarlyWarningVO> selectMyEarlyWarnings(WorkOrderEarlyWarningDTO workOrderEarlyWarningDTO);

}
